Skip to content

feat/ui studio layout#19

Draft
dustenhubbard wants to merge 7 commits into
feat/ui-v1-lists-panelfrom
feat/ui-studio-layout
Draft

feat/ui studio layout#19
dustenhubbard wants to merge 7 commits into
feat/ui-v1-lists-panelfrom
feat/ui-studio-layout

Conversation

@dustenhubbard

Copy link
Copy Markdown
Owner
  • feat(theme): add Studio and Atlas named themes with chrome tokens
  • feat(icons): add Studio activity- and tool-rail vector icons
  • feat(ui): build the Studio layout — activity rail, panel, canvas, rails
  • feat(ui): offer Studio and Atlas in the theme picker

Add the Studio (dark) and Atlas (light) named themes to the theme engine.
Both build on the qdarkstyle Dark/Light base, remap it to the concept
palettes, and carry a single teal accent (#37c0a6) with dark ink on the
accent (white on the brighter teal fails WCAG). Add studio_tokens() as the
one source of chrome tokens for the bespoke Studio-layout widgets; the canvas
and the controls floating over it stay dark in both shells. The light/dark
themes keep their historical azure look unchanged.

Expand the theme tests to cover named-theme resolution, the teal accent and
on-accent ink, the chrome-token table, and that no azure appears anywhere in
the Studio/Atlas chrome.
Add stroked 24x24 SVGs for the activity rail (objects, traces, sections,
3D scene, settings), the tool rail's Flag and Host tiles, the section-nav
chevrons, and the Objects-panel search field. They render through the
existing tinted-icon path, so the Studio rails use vector line icons rather
than the mockup's placeholder glyphs. Flag and Host now resolve to icons;
update the icon tests to match and to assert the Studio icon set is present.
Add the gui/studio package implementing the Studio layout grammar: the
activity rail; the first-class filterable Objects panel (model/view + a
delegate that draws swatch, name, faint mono type, and a curation status dot,
with a teal-bar selection and a curation legend); the dark canvas with glassy
floating controls (active-object badge, scale bar, section-nav pill, and a
brightness/contrast card with teal thumbs); the flush tool rail; the
trace-palette strip; the mono status bar; and a title strip, all assembled by
StudioShell.

The widgets are a pure view layer (PySide6 plus the theme/icon utilities
only), driven by data setters and signals, so they construct headlessly and
can be adopted by the main window. Chrome comes from studio_tokens through a
single QSS template; a theme toggle swaps the Studio (dark) and Atlas (light)
shell around the always-dark canvas.

Add dev/studio_preview.py to render both shells offscreen, and headless tests
covering the structure and the non-negotiables (row anatomy, flush tool rail,
zero azure, theme toggle, and honest 3D/Settings seams).
Add Studio (dark) and Atlas (light) to the theme radio in both the View-menu
theme dialog and the options dialog, persisted through the existing "theme"
setting. This makes the new token layer selectable in the running app while
the bespoke Studio layout widgets are adopted into the main window separately.
Replace the title strip's placeholder conic-gradient mark with the shipped
PyReconstruct app icon — the dark-glass squircle on the Studio shell, the light
squircle on Atlas, mirroring how the main window chooses the OS window icon —
and set it as the shell's window icon so the real window decoration carries it
too. Falls back to the conic mark if the asset can't be loaded. The icon path
is resolved relative to the package, so the view layer gains no new dependency.
…ark gap

Swap the title strip's squircle app icon for the bare transparent fork logo
(logo.png), which reads on both the dark and light title bars, and use it as
the window icon too. Collapse the "Py" / "Reconstruct" wordmark into a single
rich-text label so they render as one word — previously the layout's item
spacing (plus a stray zero-width spacer) opened a visible gap between them.
"Reconstruct" keeps the teal accent, re-tinted with the theme.
@dustenhubbard dustenhubbard added this to the v1.30.0 milestone Jul 4, 2026
…t/ui-studio-layout

# Conflicts:
#	PyReconstruct/modules/gui/dialog/all_options.py
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant